﻿using BCrypt.Net;
using static System.Net.Mime.MediaTypeNames;
using BCryptNet = BCrypt.Net.BCrypt; // 别名以避免冲突

public static class PasswordHasher
{
    // 哈希密码
    public static string HashPassword(string password)
    {
        // workFactor 默认是 11，值越大越安全但计算越慢。
        // 应根据服务器性能调整（通常在 10-14 之间）。
        return BCryptNet.HashPassword(password, workFactor: 12);
    }

    // 验证密码
    public static bool Verify(string password, string passwordHash)
    {
        return BCryptNet.Verify(password, passwordHash);
    }
}

//BCrypt.Net - Next的 HashPassword方法会​​自动生成随机的盐​​，并将其与哈希结果、成本因子等信息​​合并成一个字符串​​返回。你不需要自己生成、存储或管理盐。
//返回的字符串格式类似于 $2a$12$s4Bx7G2rNfOJWbBfMS2yKeEo7KvrlPpQLYRadRb...，其中包含了算法版本、成本因子和盐。